///*******************************************************************************
// * Copyright (c) 2004, 2006 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// *     IBM Corporation - initial API and implementation
// *******************************************************************************/
//package org.eclipse.ui.tests.commands;
//
//import java.util.Map;
//
//import org.eclipse.ui.IViewPart;
//import org.eclipse.ui.IWorkbenchPage;
//import org.eclipse.ui.PartInitException;
//import org.eclipse.ui.commands.AbstractHandler;
//import org.eclipse.ui.commands.ExecutionException;
//import org.eclipse.ui.commands.HandlerSubmission;
//import org.eclipse.ui.commands.ICommand;
//import org.eclipse.ui.commands.IHandler;
//import org.eclipse.ui.commands.IWorkbenchCommandSupport;
//import org.eclipse.ui.commands.Priority;
//import org.eclipse.ui.tests.harness.util.UITestCase;
//
///**
// * A test for whether part identifiers work properly for HandlerSubmissions.
// * 
// * @since 3.1
// */
//public final class Bug74990Test extends UITestCase {
//
//	/**
//	 * Constructs a new instance of <code>Bug74990Test</code>.
//	 * 
//	 * @param name
//	 *            The name of the test
//	 */
//	public Bug74990Test(final String name) {
//		super(name);
//	}
//
//	/**
//	 * Tests whether a part-specific handler -- submitted via Java code -- is
//	 * matched properly. This is only using the part id. The test verifies that
//	 * it is active when the part is active, and not active when the part is not
//	 * active.
//	 * 
//	 * @throws PartInitException
//	 *             If something goes wrong creating the part to which this
//	 *             handler is tied.
//	 * 
//	 */
//	public final void testPartIdSubmission() throws PartInitException {
//		// Define a command.
//		final String testCommandId = "org.eclipse.ui.tests.commands.Bug74990";
//		final IWorkbenchCommandSupport commandSupport = fWorkbench
//				.getCommandSupport();
//		final ICommand testCommand = commandSupport.getCommandManager()
//				.getCommand(testCommandId);
//
//		// Create a handler submission.
//		final IHandler handler = new AbstractHandler() {
//			public final Object execute(final Map parameterValuesByName)
//					throws ExecutionException {
//				// Do nothing.
//				return null;
//			}
//		};
//		final HandlerSubmission testSubmission = new HandlerSubmission(
//				"org.eclipse.ui.tests.api.MockViewPart", null, null,
//				testCommandId, handler, Priority.MEDIUM);
//		commandSupport.addHandlerSubmission(testSubmission);
//
//		try {
//			// Test to make sure the command is not currently handled.
//			assertTrue("The MockViewPart command should not be handled",
//					!testCommand.isHandled());
//
//			/*
//			 * Open a window with the MockViewPart, and make sure it is now
//			 * handled.
//			 */
//			final IWorkbenchPage page = openTestWindow().getActivePage();
//			final IViewPart openedView = page
//					.showView("org.eclipse.ui.tests.api.MockViewPart");
//			page.activate(openedView);
//			while (fWorkbench.getDisplay().readAndDispatch()) {
//				// Read the event queue
//			}
//			assertTrue("The MockViewPart command should be handled",
//					testCommand.isHandled());
//
//			// Hide the view, and test that is becomes unhandled again.
//			page.hideView(openedView);
//			while (fWorkbench.getDisplay().readAndDispatch()) {
//				// Read the event queue
//			}
//			assertTrue("The MockViewPart command should not be handled",
//					!testCommand.isHandled());
//
//		} finally {
//			commandSupport.removeHandlerSubmission(testSubmission);
//		}
//
//	}
//}
